iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Software Development

就是要來點 A.I. 的 TopAOAIConnector App系列 第 23

EP 23 - 設計應用自定 AOAI 聊天的系統角色 (III)

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會展開使用 Avalonia UI 技術所建立的 TopAOAIConnector App 。由於使用 Avalonia UI 可以很快速的進行各平台的 桌面 應用程式開發,並且透過此 TopAOAIConnector App 來串接 Azure OpenAI Service 時所需的功能研究。

本篇是 就是要來點 A.I. 的 TopAOAIConnector App 系列文的 EP23。


EP 19 有提到要客製化設定系統角色扮演 Prompt。隨著這個脈絡與前一回已經讓畫面 UI 有紀錄此系統角色扮演 Prompt 的相關處理,那本回繼續來處理能跟 Chat 橋接的部分!


由於在前一回已經多設計了 ChatSystemRole 這個類別來使用,繼續來擴增此類別的設計:

public static ObservableCollection<ChatSystemRole> InstanceItems { get; set; }
static ChatSystemRole()
{
    InstanceItems = [];
}

變更完成如下圖紅框:
01

接著找到 ViewModels/ChatPageViewModel,並變更一下其建構式的程式如下:

if (SystemRoles.Count > 0)
{
    SelectedSystemRole = SystemRoles[0];
    messages.Add(ChatMessage.CreateSystemMessage(SelectedSystemRole.Prompt));
}

並將原本設計的 SystemRoles 變更其型態與設定其內容的資料來源,不再使用直接寫死的物件內容:

public ObservableCollection<ChatSystemRole> SystemRoles { get; } = ChatSystemRole.InstanceItems;

在把先前設計 _selectedSystemRole 型態變更為所設計的 ChatSystemRole:

public ChatSystemRole? _selectedSystemRole;

變更完成如下圖紅框:
02-1

接著就是原本使用 KeyValuePair 取值是靠 Value ,現在因為改變成 ChatSystemRole 所以是靠 Prompt 屬性來設定,一處是在 Add 方法;另一處是在 Selected 方法:

SelectedSystemRole!.Prompt

變更完成如下圖紅框:
02-2

當然隨著型態設計的改變,也必須變更 Views/ChatPageView.axmal 的 XAML 設定:

Name

變更完成如下圖紅框:
03

最後再次回到 ViewModels/SettingPageViewModel 這個 SettingPageViewModel 類別的建構式設定,將原本撰寫:

ChatSystemRoles ??= [];

變更為:

ChatSystemRole.InstanceItems = ChatSystemRoles ??= [new() { Name = "Default System Role", Prompt= "你是協助人員尋找資訊的 AI 助理。" }];

變更完成如下圖紅框:
04

這樣可以讓程式在一開始在無任何由使用者設定的 System Role 時,也會有個預設的 System Role 帶入。

執行偵錯(F5)看看。

切換到 SettingPage:
05-1

ComboBox 當中有預設 System Role 資料:
05-2

輸入想新增的 System Role 資料:
05-3

ComboBox 當中新增完成:
05-4

切換到 ChatPage 的 ComboBox 也出現同樣的資料:
05-5

完成!!!


上一篇
EP 22 - 設計應用自定 AOAI 聊天的系統角色 (II)
下一篇
EP 24 - 設計應用自定 AOAI 聊天的系統角色 (IV)
系列文
就是要來點 A.I. 的 TopAOAIConnector App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言